unit UCadastroLocalProduto;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, UFomCadastro, DBCtrls, StdCtrls, Buttons, ExtCtrls, DB, DBTables,
  Mask, ToolEdit, RXDBCtrl, Grids, DBGrids, ComCtrls, DBClient, CurrEdit,
  QuickRpt, Provider, Menus, RxDBComb, Math, ActnList,shellapi,IdGlobal,dateutils;

type
  TFCadastroLocalProduto = class(TFormCadastro)
    Label14: TLabel;
    edCodigo: TDBEdit;
    Label3: TLabel;
    DBLCBLocal: TDBLookupComboBox;
    Label66: TLabel;
    EdCodProdutoMercadoria: TEdit;
    Label1: TLabel;
    EdRefProdutoMercadoria: TEdit;
    Label24: TLabel;
    DBLCBProdutoMercadoria: TDBLookupComboBox;
    DSLocal: TDataSource;
    QProduto: TQuery;
    DSProduto: TDataSource;
    GroupBox1: TGroupBox;
    Label8: TLabel;
    Label9: TLabel;
    Label12: TLabel;
    Label11: TLabel;
    Label10: TLabel;
    Label13: TLabel;
    Label2: TLabel;
    Label15: TLabel;
    DBLookupComboBox1: TDBLookupComboBox;
    DBLookupComboBox2: TDBLookupComboBox;
    dblCredICMS: TDBLookupComboBox;
    dblCredICMSSubs: TDBLookupComboBox;
    dblCredIPI: TDBLookupComboBox;
    dblCredPIS: TDBLookupComboBox;
    dblCredCOFINS: TDBLookupComboBox;
    dblDebICMS: TDBLookupComboBox;
    dblDebICMSSub: TDBLookupComboBox;
    dblDebIPI: TDBLookupComboBox;
    dblDebPIS: TDBLookupComboBox;
    dblDebCOFINS: TDBLookupComboBox;
    QCadastroLOCPROD_CODIGO: TIntegerField;
    QCadastroLOCPROD_PRODUTO: TIntegerField;
    QCadastroLOCPROD_LOCAL: TIntegerField;
    QCadastroLOCPROD_CONT_CRE_OPERACAO: TIntegerField;
    QCadastroLOCPROD_CONT_DEB_OPERACAO: TIntegerField;
    QCadastroLOCPROD_CONT_CRE_ICMS: TIntegerField;
    QCadastroLOCPROD_CONT_DEB_ICMS: TIntegerField;
    QCadastroLOCPROD_CONT_CRE_ICMS_SUBS: TIntegerField;
    QCadastroLOCPROD_CONT_DEB_ICMS_SUBS: TIntegerField;
    QCadastroLOCPROD_CONT_CRE_IPI: TIntegerField;
    QCadastroLOCPROD_CONT_DEB_IPI: TIntegerField;
    QCadastroLOCPROD_CONT_CRE_PIS: TIntegerField;
    QCadastroLOCPROD_CONT_DEB_PIS: TIntegerField;
    QCadastroLOCPROD_CONT_CRE_COFINS: TIntegerField;
    QCadastroLOCPROD_CONT_DEB_COFINS: TIntegerField;
    QCadastroUSUARIO: TStringField;
    QCadastroDATAMODIFICACAO: TDateTimeField;
    QCadastroUSUARIO_CADASTRO: TStringField;
    QCadastroUSUARIO_AUTERACAO: TStringField;
    QCadastroUSUARIO_EXCLUSAO: TStringField;
    QCadastroDATA_CADASTRO: TDateTimeField;
    QCadastroDATA_EXCLUSAO: TDateTimeField;
    QCadastroDATA_AUTERACAO: TDateTimeField;
    QCadastroEXCLUIDO: TStringField;
    QCadastroUSUARIO_RECUPERACAO: TStringField;
    QCadastroDATA_RECUPERACAO: TDateTimeField;
    QCadastroCODIGOEMPRESA: TIntegerField;
    cdsCadastroLOCPROD_CODIGO: TIntegerField;
    cdsCadastroLOCPROD_PRODUTO: TIntegerField;
    cdsCadastroLOCPROD_LOCAL: TIntegerField;
    cdsCadastroLOCPROD_CONT_CRE_OPERACAO: TIntegerField;
    cdsCadastroLOCPROD_CONT_DEB_OPERACAO: TIntegerField;
    cdsCadastroLOCPROD_CONT_CRE_ICMS: TIntegerField;
    cdsCadastroLOCPROD_CONT_DEB_ICMS: TIntegerField;
    cdsCadastroLOCPROD_CONT_CRE_ICMS_SUBS: TIntegerField;
    cdsCadastroLOCPROD_CONT_DEB_ICMS_SUBS: TIntegerField;
    cdsCadastroLOCPROD_CONT_CRE_IPI: TIntegerField;
    cdsCadastroLOCPROD_CONT_DEB_IPI: TIntegerField;
    cdsCadastroLOCPROD_CONT_CRE_PIS: TIntegerField;
    cdsCadastroLOCPROD_CONT_DEB_PIS: TIntegerField;
    cdsCadastroLOCPROD_CONT_CRE_COFINS: TIntegerField;
    cdsCadastroLOCPROD_CONT_DEB_COFINS: TIntegerField;
    cdsCadastroUSUARIO: TStringField;
    cdsCadastroDATAMODIFICACAO: TDateTimeField;
    cdsCadastroUSUARIO_CADASTRO: TStringField;
    cdsCadastroUSUARIO_AUTERACAO: TStringField;
    cdsCadastroUSUARIO_EXCLUSAO: TStringField;
    cdsCadastroDATA_CADASTRO: TDateTimeField;
    cdsCadastroDATA_EXCLUSAO: TDateTimeField;
    cdsCadastroDATA_AUTERACAO: TDateTimeField;
    cdsCadastroEXCLUIDO: TStringField;
    cdsCadastroUSUARIO_RECUPERACAO: TStringField;
    cdsCadastroDATA_RECUPERACAO: TDateTimeField;
    cdsCadastroCODIGOEMPRESA: TIntegerField;
    DSPlanoConta: TDataSource;
    procedure EdCodProdutoMercadoriaExit(Sender: TObject);
    procedure EdRefProdutoMercadoriaExit(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure DBLCBLocalKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure DBLCBProdutoMercadoriaKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure DBLookupComboBox1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BtnIncluirClick(Sender: TObject);
    procedure DSProdutoDataChange(Sender: TObject; Field: TField);
    procedure BtnSalvarClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FCadastroLocalProduto: TFCadastroLocalProduto;

implementation

uses UDmGestao, UGeral,  UCobranca,
  VendaCancelaNotaFiscal, UEmissaoNotaFiscal,
  UPesquisaItemNotaFiscal, UGestao, UPesquisaRapida, UEmissaoCobrancaVendas,
  PedidoVenda_NOVO, UValoresEstoqueProduto, UPesquisaNovaNFVenda,
  UConsultaNFNaoEmitida, UPesquisaPedidoNotaFiscal, UConsultaItensNfMae,USalvarXML;

{$R *.dfm}

procedure TFCadastroLocalProduto.EdCodProdutoMercadoriaExit(
  Sender: TObject);
var Filtro : String;
begin
  inherited;

  Filtro := ' ';

  if DSProduto.DataSet.Active = false then
    DSProduto.DataSet.open;

  if trim(EdCodProdutoMercadoria.Text) <> '' then
  begin

    if Usando_Query_Pesquisa(Format(Pesquisa_PRoduto,['PROD_CODIGO',
                                                      EdCodProdutoMercadoria.Text,
                                                      '0',
                                                      Filtro])) then
    begin

      if Query_Pesquisa.FieldByName('prod_ativo').AsString = 'N' then
      begin
        Showmessage('Produto Inativo...');
        EdCodProdutoMercadoria.Clear;
        EdRefProdutoMercadoria.Clear;
        DBLCBProdutoMercadoria.KeyValue := null;
        EdCodProdutoMercadoria.SetFocus;
      end else begin
        dsCadastro.DataSet.FieldByName('LOCPROD_PRODUTO').AsString := Query_Pesquisa.Fields[0].AsVariant;
      end;
    end  else begin
      Showmessage('Nenhum produto encontrado...');
      EdCodProdutoMercadoria.Clear;
      EdRefProdutoMercadoria.Clear;
      DBLCBProdutoMercadoria.KeyValue := null;
      EdCodProdutoMercadoria.SetFocus;
    end;
  end;

end;

procedure TFCadastroLocalProduto.EdRefProdutoMercadoriaExit(
  Sender: TObject);
VAR Filtro:string;
begin
  inherited;

  Filtro := ' ';

  if trim(EdRefProdutoMercadoria.Text) <> '' then
  begin

    if Usando_Query_Pesquisa(Format(Pesquisa_PRoduto,['PROD_REFERENCIA',
                                                      Quotedstr(EdRefProdutoMercadoria.Text),
                                                      '0',
                                                      Filtro])) then
    begin

      if Query_Pesquisa.FieldByName('prod_ativo').AsString = 'N' then
      begin
        Showmessage('Produto Inativo...');
        EdCodProdutoMercadoria.Clear;
        EdRefProdutoMercadoria.clear;
        DBLCBProdutoMercadoria.KeyValue := null;
        EdRefProdutoMercadoria.SetFocus;
      end else begin
        dsCadastro.DataSet.FieldByName('LOCPROD_PRODUTO').AsString := Query_Pesquisa.Fields[0].AsVariant;
      end;
    end  else begin
      Showmessage('Nenhum produto encontrado...');
      EdCodProdutoMercadoria.Clear;
      EdRefProdutoMercadoria.clear;
      DBLCBProdutoMercadoria.KeyValue := null;
      EdRefProdutoMercadoria.SetFocus;
    end;

  end;

end;

procedure TFCadastroLocalProduto.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
   FCadastroLocalProduto.Release;
   FCadastroLocalProduto := Nil;
end;

procedure TFCadastroLocalProduto.DBLCBLocalKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  inherited;
  fun_dblookup(Key, Shift, DBLCBLocal);
end;

procedure TFCadastroLocalProduto.DBLCBProdutoMercadoriaKeyDown(
  Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  inherited;
  fun_dblookup(Key, Shift, DBLCBProdutoMercadoria);
end;

procedure TFCadastroLocalProduto.DBLookupComboBox1KeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  inherited;
  if key = vk_f8 then
  begin

    Application.CreateForm(TFPesquisaRapida,FPesquisaRapida);

    FPesquisaRapida.tipo    := 'CONTA CONTABIL';
    CaPtUrA_pEsQuIsA_rApIdA := '';

    FPesquisaRapida.ShowModal;

    if CaPtUrA_pEsQuIsA_rApIdA <> '' then
      TDBLookupComboBox(sender).Field.AsVariant := CaPtUrA_pEsQuIsA_rApIdA;

    CaPtUrA_pEsQuIsA_rApIdA := '';

    Exit;

  end;

  case key of
   116 : begin //F5
          TDBLookupComboBox(Sender).ListSource.DataSet.Close;
          TDBLookupComboBox(Sender).ListSource.DataSet.Open;
         end ;
  end;

  if key = 46 then
  begin
    TDBLookupComboBox(Sender).KeyValue:=null;
    TDBLookupComboBox(Sender).DataSource.DataSet.FieldByName(TDBLookupComboBox(Sender).DataField).AsVariant:=null;
  end;
end;

procedure TFCadastroLocalProduto.BtnIncluirClick(Sender: TObject);
begin
  inherited;
  EdRefProdutoMercadoria.Text:= '';
  EdCodProdutoMercadoria.Text:= '';
  dsCadastro.DataSet.FieldByName('LOCPROD_CODIGO').AsInteger           := Retorna_Codigo_Generetor('GEN_LOCAL_PRODUTO');

end;

procedure TFCadastroLocalProduto.DSProdutoDataChange(Sender: TObject;
  Field: TField);
begin
  inherited;

  EdRefProdutoMercadoria.Text:= DSProduto.DataSet.FieldByName('PROD_REFERENCIA').AsString;
  EdCodProdutoMercadoria.Text:= DSProduto.DataSet.FieldByName('PROD_CODIGO').AsString;

end;

procedure TFCadastroLocalProduto.BtnSalvarClick(Sender: TObject);
begin

   if dsCadastro.DataSet.FieldByName('LOCPROD_LOCAL').IsNull then
   begin
    ShowMessage('Local obrigatorio.');
    DBLCBLocal.SetFocus;
    exit;
   end;

   if dsCadastro.DataSet.FieldByName('LOCPROD_PRODUTO').IsNull then
   begin
    ShowMessage('Produto obrigatorio.');
    DBLCBProdutoMercadoria.SetFocus;
    exit;
   end;

  inherited;

end;

end.
